#include <iostream>
#include <string>

// 定义一个类，表示温度
class Temperature {
private:
    double degreesCelsius;

public:
    // 构造函数，初始化温度值
    Temperature(double degrees) : degreesCelsius(degrees) {}

    // 重载类型转换运算符，将Temperature对象转换为double类型
    operator double() const {
        return degreesCelsius;
    }

    // 重载类型转换运算符，将Temperature对象转换为std::string类型
    operator std::string() const {
        return std::to_string(degreesCelsius) + " °C";
    }

    // 友元函数，重载流插入运算符，用于输出Temperature对象
    friend std::ostream& operator<<(std::ostream& out, const Temperature& temp) {
        out << temp.degreesCelsius << " °C";
        return out;
    }
};

// 使用示例
int main() {
    Temperature temp(36.5);

    // 使用重载的类型转换运算符
    double tempInDouble = temp; // 自动转换为double类型
    std::string tempInString = temp; // 自动转换为std::string类型

    std::cout << "Temperature in double: " << tempInDouble << std::endl;
    std::cout << "Temperature in string: " << tempInString << std::endl;

    return 0;
}